import pickle
import base64
from django_redis import get_redis_connection
def merge_cookie_redis_cart(request,user,response):
    """
    :param request: 为了获取cookie数据
    :param user:  为了获取redis数据
    :param response: 为了清除cookie数据
    :return:
    """

    #1,获取cookie数据
    cookie_cart = request.COOKIES.get("cart")

    #2,判断cookie中是否用数据
    if not cookie_cart:
        return response

    #3,转换cookie数据为字典
    cookie_dict = {}
    if cookie_cart:
        cookie_dict = pickle.loads(base64.b64decode(cookie_cart.encode()))

    #4,获取redis数据
    redis_conn = get_redis_connection("cart")
    # cart_dict =  redis_conn.hgetall("cart_%s"%user.id)
    # cart_selected_list = redis_conn.smembers("cart_selected_%s"%user.id)

    #5,合并数据到redis
    for sku_id,count_selected in cookie_dict.items():
        redis_conn.hset("cart_%s"%user.id,sku_id,count_selected["count"])
        redis_conn.sadd("cart_selected_%s"%user.id,sku_id)

    #6,清除cookie数据
    response.delete_cookie("cart")

    #7,返回响应
    return response